﻿namespace AiFrame.InterfaceLib.Data.Provider
{
    /// <summary>
    /// Represents a databse provider.
    /// Plugins with this interface can be registered in the
    /// common way, the pluginmanager offers a property to get
    /// all database providers.
    /// The database providers can be used to show them in a login
    /// window.
    /// </summary>
    public interface IDbProvider
    {
        /// <summary>
        /// Returns the NHibernate connection provider.
        /// </summary>
        string ConnectionProvider { get; }

        /// <summary>
        /// Returns the NHibernate dialect.
        /// </summary>
        string Dialect { get; }

        /// <summary>
        /// Returns the NHibernate driver class.
        /// </summary>
        string DriverClass { get; }

        /// <summary>
        /// Gets optional additional parameters 
        /// for the connection string.
        /// </summary>
        string AdditionalParameter { get; }

        /// <summary>
        /// Returns the display name of the database provider.
        /// </summary>
        /// <returns></returns>
        string ToString();
    }
}
